import { setupDirective } from '@/directive';
// import { setupI18n } from '@/lang';
import { setupRouter } from '@/router';
import { setupStore } from '@/store';
import { setupElIcons } from './icons';
import { setupPermission } from './permission';
import VxeUITable from 'vxe-table';
import VxeUI from 'vxe-pc-ui';
import JsonEditorVue from 'json-editor-vue3';
import VxeUIPluginRenderElement from '@vxe-ui/plugin-render-element';
import {
  ElInput,
  ElInputNumber,
  ElSelect,
  ElOption,
  ElCascader,
  ElDatePicker,
  ElTimeSelect,
  ElTreeSelect,
} from 'element-plus';
// 导入 VMdPreview 组件及其样式
import VMdPreview from '@kangc/v-md-editor/lib/preview';
// 导入所需的主题，例如 GitHub 主题
import githubTheme from '@kangc/v-md-editor/lib/theme/github.js';
// 导入并配置 highlight.js 用于代码高亮
import hljs from 'highlight.js';

VxeUIPluginRenderElement.component(ElInput);
VxeUIPluginRenderElement.component(ElInputNumber);
VxeUIPluginRenderElement.component(ElSelect);
VxeUIPluginRenderElement.component(ElOption);
VxeUIPluginRenderElement.component(ElCascader);
VxeUIPluginRenderElement.component(ElDatePicker);
VxeUIPluginRenderElement.component(ElTimeSelect);
VxeUIPluginRenderElement.component(ElTimeSelect);
VxeUIPluginRenderElement.component(ElTreeSelect);

// import './vxe'; // 计划废弃
// import './renders/RaDictRender'; // 计划废弃
// import './renders/RaElButtonRender'; // 计划废弃

import './renders/RaElInputRender';
import './renders/RaElSelectRender';
import './renders/RaElDatePickerRender';
import './renders/RaElTreeSelectRender';
import './renders/RaElCascaderRender';
import './renders/RaElTagRender';

// 使用字典代码的选择类渲染组件
import './renders/RaDictSelectRender';
// 表格操作列按钮渲染
import './renders/RaElButtonSetRender';
// 使用字典代码的树形选择渲染
import './renders/RaDictTreeSelectRender';
// 使用字典代码的开关渲染
import './renders/RaDictSwitchRender';
// el-image 图片渲染
import './renders/RaElImageRender';
// 数组标签渲染
import './renders/RaArrayTagsRender';
// 工具栏左侧按钮渲染
import './renders/RaToolbarToolRender';
// 工具栏右侧按钮渲染
import './renders/RaToolbarButtonRender';
// 表格选择数据查看渲染
import './renders/RaTableSelectViewRender';
// 选项数据渲染标签
import './renders/RaLabelOptionRender';
// 颜色拾取器渲染
import './renders/RaColorPickerRender';
// 高德地图位置查看渲染器
import './renders/RaViewAmapRender';
// 百度地图位置查看渲染器
import './renders/RaViewBmapRender';
// 腾讯地图位置查看渲染器
import './renders/RaViewTmapRender';
// 文件下载渲染器
import './renders/RaFileDownloadRender';
// 富文本渲染器
import './renders/RaRichTextDialogRender';
// markdown渲染器
import './renders/RaMdDialogRender';
// json 对象渲染器
import './renders/RaViewObjectRender.jsx';

export default {
  install(app) {
    // 自定义指令(directive)
    setupDirective(app);

    // 状态管理(store)
    setupStore(app);

    // 路由(router)
    setupRouter(app);

    // Element-plus图标
    setupElIcons(app);

    // 路由守卫
    setupPermission();

    // 扩展 element ui 插件
    VxeUI.use(VxeUIPluginRenderElement);

    // 注册 vxe-pc-ui
    app.use(VxeUI);

    // 注册 VMdPreview
    VMdPreview.use(githubTheme, {
      Hljs: hljs,
    });
    app.use(VMdPreview);

    // 注册 json-editor
    app.use(JsonEditorVue);

    // 注册 vxe-table
    app.use(VxeUITable);
  },
};
